// Copyright (C) 2022 即时通讯网(52im.net) & Jack Jiang.
// The RainbowChat Project. All rights reserved.
// 
// 【本产品为著作权产品，合法授权后请放心使用，禁止外传！】
// 【本次授权给：<广西木子科技有限公司>，授权编号：<NT220402151538>，代码指纹：<A.648883738.885>，技术对接人微信：<ID: Lingmuziyi>】
// 【授权寄送：<收件：李先生、地址：南宁市科园西十路11号国电智能大厦1101F、电话：17736659550、邮箱：yingshashou@vip.qq.com>】
// 
// 【本系列产品在国家版权局的著作权登记信息如下】：
// 1）国家版权局登记名(简称)和权证号：RainbowChat    （证书号：软著登字第1220494号、登记号：2016SR041877）
// 2）国家版权局登记名(简称)和权证号：RainbowChat-Web（证书号：软著登字第3743440号、登记号：2019SR0322683）
// 3）国家版权局登记名(简称)和权证号：RainbowAV      （证书号：软著登字第2262004号、登记号：2017SR676720）
// 4）国家版权局登记名(简称)和权证号：MobileIMSDK-Web（证书号：软著登字第2262073号、登记号：2017SR676789）
// 5）国家版权局登记名(简称)和权证号：MobileIMSDK    （证书号：软著登字第1220581号、登记号：2016SR041964）
// * 著作权所有人：江顺/苏州网际时代信息科技有限公司
// 
// 【违法或违规使用投诉和举报方式】：
// 联系邮件：jack.jiang@52im.net
// 联系微信：hellojackjiang
// 联系QQ号：413980957
// 授权说明：http://www.52im.net/thread-1115-1-1.html
// 官方社区：http://www.52im.net
package com.eva.framework.dto;

import com.eva.epc.common.util.ESerializable;

/**
 * 本类中用来替换原 {@link LoginInfo}类的，因原类里用了login_name、login_psw这样的
 * 字段，在使用JSON跨设备进行数据传输时，就无法反射成功了（跟setLoginName、setLoginPsw无法对应起来哦！）。
 * <p>
 * 封装用户登陆时提交的数据的类.<br>
 * 本类目前仅用于登陆验证时.
 *
 * @author Jack Jiang(http://www.52im.net/space-uid-1.html)
 * @version 1.0
 */
public class LoginInfo2 implements ESerializable {
    /**
     * 客户端设备类型：Android客户端
     */
    public final static String OS_TYPE_ANDRIOD = "0";
    /**
     * 客户端设备类型：iOS客户端
     */
    public final static String OS_TYPE_IOS = "1";
    /**
     * 客户端设备类型：Web客户端
     */
    public final static String OS_TYPE_WEB = "2";

    /**
     * 用户登陆名
     */
    private String loginName;
    /**
     * 客户端的版本号
     */
    private String clientVersion = "";
    /**
     * 该密码可能是加密后的字串
     */
    private String loginPsw;

    /**
     * 电话号码登录,约定该字段不为空则一定是用号码+验证码登录
     */
    private String loginPhone;
    /**
     * 用于记录用户的登陆设备信息，比如手机登陆时的手机型号等
     * （本字段主要用于信息记录和传递，非核心字段，可为null）
     */
    private String deviceInfo = null;
    /**
     * 设备系统类型.
     * <p>
     * 当前约定：0-Android客户端，1-iOS客户端，2-Web客户端 .
     * <p>
     * <font color="#ff0000">注意：请尽量确保本字段的含义与 {@link LogoutInfo}中的osType字段相同。</font>
     */
    private String osType = null;

    /**
     * 设备标识码：用于唯一标识此设备的id.
     * <p>
     * 当 {@link #osType}=1时，本字段存放的是ios设备的device token，可用于服务端
     * 实现向此ios设备的离线消息推送（通过苹果的APNs服务实现）。
     */
    private String deviceID = null;

    public String getLoginName() {
        return loginName;
    }

    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }

    public String getLoginPsw() {
        return loginPsw;
    }

    public void setLoginPsw(String loginPsw) {
        this.loginPsw = loginPsw;
    }

    public String getClientVersion() {
        return clientVersion;
    }

    public void setClientVersion(String clientVersion) {
        this.clientVersion = clientVersion;
    }

    public String getDeviceInfo() {
        return deviceInfo;
    }

    public void setDeviceInfo(String deviceInfo) {
        this.deviceInfo = deviceInfo;
    }

    public String getOsType() {
        return osType;
    }

    public void setOsType(String osType) {
        this.osType = osType;
    }

    public String getDeviceID() {
        return deviceID;
    }

    public void setDeviceID(String deviceID) {
        this.deviceID = deviceID;
    }

    /**
     * 当前登陆信息是否是从Android设备上发出的。
     *
     * @return true表示是，否则不是
     * @since 4.3
     */
    public boolean isAndroid() {
        return LoginInfo2.OS_TYPE_ANDRIOD.equals(this.osType);
    }

    /**
     * 当前登陆信息是否是从iOS设备上发出的。
     *
     * @return true表示是，否则不是
     * @since 4.3
     */
    public boolean isIOS() {
        return LoginInfo2.OS_TYPE_IOS.equals(this.osType);
    }

    /**
     * 当前登陆信息是否是从Web端上发出的。
     *
     * @return true表示是，否则不是
     * @since 4.3
     */
    public boolean isWeb() {
        return LoginInfo2.OS_TYPE_WEB.equals(this.osType);
    }

    public String getLoginPhone() {
        return loginPhone;
    }

    public void setLoginPhone(String loginPhone) {
        this.loginPhone = loginPhone;
    }

}
